package com.ht.api.call.func.impl.official;

import com.ht.api.bean.AjaxResult;
import com.ht.api.bean.LoginBean;
import com.ht.api.call.func.IFunctionCall;
import com.ht.api.db.exception.HtException;
import com.ht.api.open.OpenUtil;

import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import lombok.extern.slf4j.Slf4j;

/**
 * 添加公众号客服帐号的前置函数
 * @author asq
 * @createTime 2025年3月9日 09:11:00
 */
@Slf4j
@Deprecated
public class OfficialKfAccountAddFunctionCall implements IFunctionCall {
	/** 接口ID：添加公众号客服账号 */
	private static final long API_ID = 1909502325286899712L;
	/** 接口ID：设置客服账号的头像 */
	private static final long API_ID_AVATAR = 1909903144515670016L;

	@Override
	public String getName() {
		return "添加公众号客服帐号";
	}

	@Override
	public JSONObject execute(LoginBean me, JSONObject param, AjaxResult result) {
		// 获取参数
		String appid = param.getStr("appid");
		String kfAccount = param.getStr("kf_account");
		String nickname = param.getStr("nickname");
		String ossUrl = param.getStr("avatar");
		
		// 请求平台接口创建账号
		JSONObject accountParam = JSONUtil.createObj();
		accountParam.set("kf_account", kfAccount);
		accountParam.set("nickname", nickname);
		String str = OpenUtil.call(appid, API_ID, accountParam);
		
		// 如果公众号接口调用成功，则操作本地数据库
		JSONObject obj = JSONUtil.parseObj(str);
		if (obj.getInt("errcode") == 0) {
			// 再调用接口，设置头像
			if (StrUtil.isNotBlank(ossUrl)) {
				JSONObject avatarParam = JSONUtil.createObj();
				avatarParam.set("kf_account", kfAccount);
				avatarParam.set("oss_url", ossUrl);
				String str2 = OpenUtil.call(appid, API_ID_AVATAR, avatarParam);
				JSONObject obj2 = JSONUtil.parseObj(str2);
				if (obj2.getInt("errcode") != 0) {
					log.warn("创建公众号客服账号成功，但设置头像失败:{}", obj2.getStr("errmsg"));
				}
			}
		} else {
			throw new HtException("添加客服帐号失败：" + obj.getStr("errmsg"));
		}
		
		return JSONUtil.createObj();
	}
}
